// 模型表，日志数据库中用于创建表结构等
package model

// 管道符日志库系统
type PipeLog struct {
	Id      int64  `gorm:"column:id;primary_key" json:"id,string" form:"id"` // 日志ID，unix-纳秒时间戳 time.Now().UnixNano()
	Did     int64  `gorm:"column:did" json:"did,string" form:"did"`          // 设备ID
	Args    string `gorm:"cilumn:args" json:"args" form:"args"`              // BASH管道的第一个参数，用于区分不同程序之间的类型隔离
	Content string `gorm:"cilumn:content" json:"content" form:"content"`     // 命令输出内容
}

func (PipeLog) TableName() string {
	return "pipe_log"
}

// APP程序日志
type AppLog struct {
	Id      int64  `gorm:"column:id;primary_key" json:"id,string" form:"id"` // 日志ID，unix-纳秒时间戳 time.Now().UnixNano()
	Did     int64  `gorm:"column:did" json:"did,string" form:"did"`          // 设备ID
	Args    string `gorm:"cilumn:args" json:"args" form:"args"`              // 程序名称
	File    string `gorm:"cilumn:file" json:"file" form:"file"`              // 发生日志文件
	Line    int64  `gorm:"cilumn:line" json:"line" form:"line"`              // 发生日志文件行数
	Level   string `gorm:"cilumn:level" json:"level" form:"level"`           // 日志等级
	Content string `gorm:"cilumn:content" json:"content" form:"content"`     // 日志内容
}

func (AppLog) TableName() string {
	return "app_log"
}

// 运行时间日志
type RuntimeLog struct {
	Id      int64  `gorm:"column:id;primary_key" json:"id,string" form:"id"` // 日志ID，unix-纳秒时间戳 time.Now().UnixNano()
	Did     int64  `gorm:"column:did" json:"did,string" form:"did"`          // 设备ID
	Args    string `gorm:"cilumn:args" json:"args" form:"args"`              // 程序名称
	Func    string `gorm:"cilumn:func" json:"func" form:"func"`              // 函数名称
	Line    int64  `gorm:"cilumn:line" json:"line" form:"line"`              // 文件行数
	Runtime int64  `gorm:"cilumn:runtime" json:"runtime" form:"runtime"`     // 运行时间，纳秒
}

func (RuntimeLog) TableName() string {
	return "runtime_log"
}

// 接口请求日志/HTTP中间件记录日志
type QuestLog struct {
	Id       int64  `gorm:"column:id;primary_key" json:"id,string" form:"id"`   // 日志ID，unix-纳秒时间戳 time.Now().UnixNano()
	Did      int64  `gorm:"column:did" json:"did,string" form:"did"`            // 设备ID
	Args     string `gorm:"cilumn:args" json:"args" form:"args"`                // 程序名称
	Uri      string `gorm:"cilumn:uri" json:"uri" form:"uri"`                   // 请求网址
	Param    string `gorm:"cilumn:param" json:"param" form:"param"`             // 请求参数
	HttpCode int64  `gorm:"cilumn:http_code" json:"http_code" form:"http_code"` // HTTP返回值Code
	Body     string `gorm:"cilumn:body" json:"body" form:"body"`                // HTTP返回值信息
	Error    string `gorm:"cilumn:error" json:"error" form:"error"`             // 请求报错信息
	Header   string `gorm:"cilumn:header" json:"header" form:"header"`          // 请求Header请求头
	QuestSec int64  `gorm:"cilumn:quest_sec" json:"quest_sec" form:"quest_sec"` // 请求耗时，纳秒
	ClientIp string `gorm:"cilumn:client_ip" json:"client_ip" form:"client_ip"` // 客户端IP
	Uid      int64  `gorm:"cilumn:uid" json:"uid" form:"uid"`                   // 用户ID
	Uuid     string `gorm:"cilumn:uuid" json:"uuid" form:"uuid"`                // 本次请求的UUID标识
	Ruid     string `gorm:"cilumn:ruid" json:"ruid" form:"ruid"`                // 本次请求的RUN_UUID标识
}

func (QuestLog) TableName() string {
	return "quest_log"
}
